package com.huoyun.car.dao;

import java.util.List;

import com.huoyun.base.dao.BaseDao;
import com.huoyun.car.bean.CarPubInfo;
import com.huoyun.car.bean.CarPubInfoCar;
import com.huoyun.car.dao.evt.GetCarPubsByCityEvt;
import com.huoyun.car.dao.evt.QueryCarForGoodsEvt;
import com.huoyun.car.model.CarPubInfoIndexModel;
import com.huoyun.car.model.CarPubInfoModel;
import com.huoyun.car.model.BidCarInfoModel;

public interface CarPubInfoDao extends BaseDao<CarPubInfo> {

	public void insert(CarPubInfo record);

	/**
	 * 查询用户发布的车源信息列表
	 * @param userId 用户id
	 * @return 车源信息列表
	 */
	public List<CarPubInfo> getInfoListByUserId(int userId);

	/**
	 * 通过车源信息id查询车源详情
	 * @param id 车源信息id
	 * @return 车源详情
	 */
	public CarPubInfo getCarPubInfoById(Long id);

	public void updateAll(CarPubInfo carPubInfo);
	
	public List<String> getCarNumberListByUserId(int userId);
	
	public void deleteCarPubInfoById(long carPubInfoId);

	public List<CarPubInfoCar> getInfoListByCondition(final CarPubInfo condition);
	
	public List<CarPubInfoModel> getCarPubInfoItemListByUserId(long userId);
	
	/**
	 * 更新指定"车源信息"的状态
	 * @param carPubInfoId
	 * @param status
	 */
	public void updateStatus(long carPubInfoId, int status);
	
	/**
	 * 获取用户的详细车源信息列表
	 * @param username
	 * @return 详细车源信息列表
	 */
	public List<CarPubInfoModel> getCarPubInfoModelListByUsername(String username);
	
	/**
	 * 获取指定车牌号的详细车源列表
	 * @param carNumber
	 * @return 详细车源列表
	 */
	public List<CarPubInfoModel> getCarPubInfoModelListByCarNumber(String carNumber);
	
	/**
	 * 获取指定用户的未上线车源信息列表
	 * @param userId
	 * @return 详细车源信息列表
	 */
	public List<CarPubInfoModel> getOfflineCarPubInfoModelList(long userId);
	
	/**
	 * 货主为货物查找相符车辆的数量
	 * 
	 * 与getSelectedCarCount接口一起使用，构造前台展示的分页对象。
	 * @author 刘晓宁
	 * @param queryCarForGoodsEvt 查询条件
	 * @return 相符的记录数量
	 */
	public long queryCarCountForGoods(QueryCarForGoodsEvt queryCarForGoodsEvt);
	
	/**
	 * 货主为货物查询相符的车辆列表
	 * 
	 * @author 刘晓宁
	 * @param queryCarForGoodsEvt 查询条件
	 * @return 相符的记录列表
	 */
	public List<BidCarInfoModel> queryCarForGoods(QueryCarForGoodsEvt queryCarForGoodsEvt);
	
	
	/**
	 * 查询应标货源的所有车源信息
	 * 
	 * @author 刘晓宁
	 * @param goodsId 货物id
	 * @return 相符的记录列表
	 */
	public List<BidCarInfoModel> queryBidCars(long goodsId, String[] carIds);
	/**
	 * 为首页查询车源信息
	 * @author yang
	 */
	
	public List<CarPubInfoIndexModel> getCarPubsByCity(GetCarPubsByCityEvt evt);
}